package com.example.music

import android.app.Application
import android.content.Context
import com.example.music.shape.ShapeManager
import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidFileProperties
import org.koin.android.logger.AndroidLogger
import org.koin.core.context.startKoin
import org.koin.core.logger.Level
import org.koin.core.module.Module
import org.koin.dsl.module

class App : Application() {

    private val shapeModule: Module = module {
        single {
            ShapeManager(getProperty("shapes"))
        }
    }

    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)
        println("App attachBaseContext...")
        // 开启koin
        startKoin {
            // 设置log级别
            AndroidLogger(Level.DEBUG)
            // 注入context，方法module中get()获取Context
            androidContext(this@App)
            // 默认名字:koin.properties,也可以重新设置名称
            androidFileProperties()
            // 设置module
            modules(shapeModule)
        }
        // 在startKoin之外,和startKoin里面的modules()函数功能相同
//         loadKoinModules(appModule)
    }
}